/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package usuarios.bd;

import conexao.ConexaoSingleton;
import conexao.DAOException;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import usuarios.classes.Usuarios;

/**
 *
 * @author aluno
 */
public class UsuarioDao implements IUsuarioDao{
    EntityManager manager;

    public UsuarioDao() throws DAOException {
        try {
            this.manager = ConexaoSingleton.getConexao();
        } catch (Exception ex) {
            throw new DAOException("Erro na conexão com Banco de Dados", ex);
        }
    }

    public void adcionarUsuario(Usuarios usuario)throws DAOException {
        try{
            manager.getTransaction().begin();
            manager.persist(usuario);
            manager.getTransaction().commit();
          }catch(Exception ex){
              if (manager.getTransaction().isActive()){
                  manager.getTransaction().rollback();
              }
              throw new DAOException("Erro ao Salvar no Banco de Dados", ex);
          }
    }

    public void excluirUsuairo(Usuarios usuario) throws DAOException  {
        try{
            manager.getTransaction().begin();
            manager.remove(usuario);
            manager.getTransaction().commit();
          }catch(Exception ex){
              if (manager.getTransaction().isActive()){
                  manager.getTransaction().rollback();
              }
              throw new DAOException("Erro ao Salvar no Banco de Dados", ex);
          }
    }

    public List<Usuarios> consultaUsuario() throws DAOException {
        try{
            Query resultado = manager.createQuery("Select u from Usuarios u");
            return resultado.getResultList();
        }catch(Exception ex){
            throw new DAOException("Sem conexão com base de dados", ex);
        }
    }

    public Usuarios consultaUsuario(int idUsuario) {
       Usuarios usuario = manager.find(Usuarios.class, idUsuario);
       return usuario;
    }

    public Usuarios consultaUsuarioSenha(String senha) throws DAOException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
